/**
 * takeEvery:是Redux-saga提供的一个方法
 */
import {put, takeEvery} from 'redux-saga/effects'
import {INIT_LIST} from './actionType'
import {getInitListAction} from "./actionCreator";
import axios from "axios";

/**
 * 必须导出一个ES6的Generator函数,在这个文件中也可以接受action了
 * @returns {Generator<*, void, *>}
 * @constructor
 */
function* TodoSagas() {


    // yield takeLatest("USER_FETCH_REQUESTED", fetchUser)
    /**
     * 表示接收到GET_INIT_LIST的时候，就执行fetchUser方法
     */
    yield takeEvery(INIT_LIST, initList)

}

/**
 * 在 Generator函数中，做异步请求的时候，就不能再使用Promise这种形式了
 * @returns {Generator<*, void, *>}
 */
function* initList() {
    try { //会等待ajax数据获取完毕将结果直接存在res里面
        const res = yield axios.get("/list")
        const action = getInitListAction(res.data.list);
        //加上yield表示让出执行权，等待put（action）执行完毕
        yield put(action)
    } catch (e) {
        console.log(e)
    }


    // axios.get("/list").then(res => {
    //     const action = getInitListAction(res.data.list);
    //     // store.dispatch(action)
    //     put(action)
    // })
}

export default TodoSagas;